[IA64] Avoid double reclaim dom0 image and dom0 initrd
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Fri, 3 Mar 2006 17:11:33 +0000 (10:11 -0700)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Fri, 3 Mar 2006 17:11:33 +0000 (10:11 -0700)
VMM doesn't need to reclaim dom0 image and dom0 initrd by using
init_domheap_pages, because they have been reclaimed by below code:
in function start_kernel of xensetup.c
    efi_memmap_walk(filter_rsvd_memory, init_boot_pages);
Reclaiming again may cause xen hang at very beginning.

BTW, dom0 initrd is for dom0 not for xen, it will be copied into dom0
memory space, so VMM doesn't need to reserve memory for dom0 initrd.
Commenting below definition makes dom0 initrd reclaimable.
-#define CONFIG_BLK_DEV_INITRD // needed to reserve memory for domain0
+//#define CONFIG_BLK_DEV_INITRD // needed to reserve memory for domain0

Signed-off-by: Anthony Xu <anthony.xu@intel.com>
xen/arch/ia64/xen/xensetup.c
xen/include/asm-ia64/config.h

index 8b6faeed26d7a6d5cdd50a808fbd53885b11e727..924d98e2caa3ab431cec96d49602e84e8191d0f3 100644 (file)
@@ -155,24 +155,6 @@ struct ns16550_defaults ns16550_com2 = {
     .parity    = 'n',
     .stop_bits = 1
 };
-/*  This is a wrapper function of init_domheap_pages,
- *  memory exceeds (max_page<<PAGE_SHIFT) will not be reclaimed.
- *  This function will go away when the virtual memmap/discontig
- *  memory issues are solved
- */
-void init_domheap_pages_wrapper(unsigned long ps, unsigned long pe)
-{
-    unsigned long s_nrm, e_nrm, max_mem;
-    max_mem = (max_page+1)<<PAGE_SHIFT;
-    s_nrm = (ps+PAGE_SIZE-1)&PAGE_MASK;
-    e_nrm = pe&PAGE_MASK;
-    s_nrm = min(s_nrm, max_mem);
-    e_nrm = min(e_nrm, max_mem);
-    if(s_nrm < e_nrm)
-         init_domheap_pages(s_nrm, e_nrm);
-}
-
-
 
 void start_kernel(void)
 {
@@ -393,17 +375,6 @@ printk("About to call domain_create()\n");
     /* PIN domain0 on CPU 0.  */
     dom0->vcpu[0]->cpu_affinity = cpumask_of_cpu(0);
 
-    /* The stash space for the initial kernel image can now be freed up. */
-    /* init_domheap_pages_wrapper is temporary solution, please refer to the
-     * descriptor of this function */
-    init_domheap_pages_wrapper(ia64_boot_param->domain_start,
-           ia64_boot_param->domain_start+ia64_boot_param->domain_size);
-    /* throw away initrd area passed from elilo */
-    if (ia64_boot_param->initrd_size) {
-        init_domheap_pages_wrapper(ia64_boot_param->initrd_start,
-           ia64_boot_param->initrd_start+ia64_boot_param->initrd_size);
-    }
-
     if (!running_on_sim)  // slow on ski and pages are pre-initialized to zero
        scrub_heap_pages();
 
index fd7bad3e7cf18bc1d6886895b3de0fe807e7dbb2..9e2c9c93c54c8d6ac6c2f1beed1f5e1db7907911 100644 (file)
@@ -249,7 +249,7 @@ extern unsigned long loops_per_jiffy;
 extern char saved_command_line[];
 struct screen_info { };
 #define seq_printf(a,b...) printf(b)
-#define CONFIG_BLK_DEV_INITRD // needed to reserve memory for domain0
+//#define CONFIG_BLK_DEV_INITRD // needed to reserve memory for domain0
 
 void dummy_called(char *function);
 #define dummy()        dummy_called((char *) __FUNCTION__)